Graphics processors are widely used to render two-dimensional (2D) and three-dimensional (3D) images for various applications, such as video games, graphics programs, computer-aided design (CAD) applications, simulation and visualization tools, and imaging. Display processors may be used to display the rendered output of the graphics processor for presentation to a user via a display device.
OpenGL® (Open Graphics Library) is a standard specification that defines an API (Application Programming Interface) that may be used when writing applications that produce 2D and 3D graphics. Other languages, such as Java, may define bindings to the OpenGL API's through their own standard processes. The interface includes multiple function calls, or instructions, that can be used to draw scenes from simple primitives. Graphics processors, multi-media processors, and even general purpose CPU's can then execute applications that are written using OpenGL function calls. OpenGL ES (embedded systems) is a variant of OpenGL that is designed for embedded devices, such as mobile wireless phones, digital multimedia players, personal digital assistants (PDA's), or video game consoles.
Graphics applications, such as 3D graphics applications, may describe or define contents of a scene by invoking API's, or instructions, that in turn use the underlying graphics hardware, such as one or more processors in a graphics device, to generate an image. The graphics hardware may undergo a series of state transitions that are exercised through these API's. A full set of states for each API call, such as a draw call or instruction, may describe the process with which the image is rendered from one or more graphics primitives, such as one or more triangles, by the hardware.
A graphics artist may often define one or more portions of a scene by creating various graphics primitives. For example, a graphics artist may use a digital content creation (DCC) tool to generate three-dimensional (3D) primitive polygonal and/or texture data that comprise constituent parts of the scene. This data may then be incorporated into a graphics application and processed within a content-processing pipeline of a hardware graphics device in order to create, or render, the final graphics image data that is to be displayed to a user. In many situations, different artists may define different portions of a scene, which may then need to be combined into a single graphics application, and these artists may also work independently of each other. In addition, the artists may frequently need to communicate and work with the developers of the graphics applications when making modifications to the primitive polygonal and/or texture data.